package com.nanyang.tms.api.service.forecast;

import com.nanyang.common.core.domain.ApiResult;
import com.nanyang.common.core.page.PageBean;
import com.nanyang.tms.api.dto.request.forecast.ForecastFrontDetailRequest;
import com.nanyang.tms.api.dto.request.forecast.ForecastFrontPageQueryRequest;
import com.nanyang.tms.api.dto.request.forecast.ForecastPageQueryRequest;
import com.nanyang.tms.api.dto.request.forecast.ForecastUpdateStateRequest;
import com.nanyang.tms.api.dto.response.forecast.ForecastBaseResponse;
import com.nanyang.tms.api.dto.response.forecast.ForecastFrontPageResponse;
import com.nanyang.tms.api.dto.response.forecast.ForecastPageResponse;

public interface ForecastQueryRpcService {
     /**
      * 列表
      * @param param
      * @return
      */
     ApiResult<PageBean<ForecastPageResponse>> listForecast(ForecastPageQueryRequest param);

     /**
      * 根据code获取详情
      * @param code
      * @return
      */
     ApiResult<ForecastBaseResponse> selectByCode(String code);

     /**
      * 前台-列表
      * @param param
      * @return
      */
     ApiResult<PageBean<ForecastFrontPageResponse>> listFrontForecast(ForecastFrontPageQueryRequest param);

     /**
      * 前台-根据code获取详情
      * @param param
      * @return
      */
     ApiResult<ForecastBaseResponse> selectByCompanyCode(ForecastFrontDetailRequest param);

     /**
      * 取消预订单
      * @param param
      * @return
      */
     ApiResult<Boolean> cancelState(ForecastUpdateStateRequest param);

     /**
      * 打印标签
      * @param param
      * @return
      */
     ApiResult<String> printTag(ForecastFrontDetailRequest param);

     /**
      * 打印交货清单
      * @param param
      * @return
      */
     ApiResult<String> printList(ForecastFrontDetailRequest param);

     /**
      * 异步生成打印标签
      * @param forecastCode
      * @return
      */
     ApiResult<Boolean> syncPrintTag(String forecastCode);
}

